﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Linq;
using DTO;

namespace DAO
{
    public class Q_DAOChi
    {
        /// <summary>
        /// Lấy danh sách chi tiêu theo ngày
        /// </summary>
        /// <param name="ngay">Ngày cần lấy danh sách</param>
        /// <returns></returns>
        public List<Chi> DanhSachChiTheoNgay(DateTime ngay)
        {
            List<Chi> dsChiTheoNgay = null;
            using (db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from i in db.Chis where i.ngay_chi_tien.Value.Equals(ngay.Date)
                                select i;
                if (query == null)
                    return null;
                dsChiTheoNgay = query.ToList<Chi>();
            }
            return dsChiTheoNgay;
        }
        /// <summary>
        /// Thêm phiếu chi mới
        /// </summary>
        /// <param name="chi">Phiếu chi mới</param>
        public void ThemPhieuChi(Chi chi)
        {
            using (db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                db.Chis.InsertOnSubmit(chi);
                db.SubmitChanges();
            }
        }
        /// <summary>
        /// Xoá phiếu chi
        /// </summary>
        /// <param name="id">Id của phiếu chi</param>
        public void XoaPhieuChi(int id)
        {
            using (db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                string query = "delete from Chi where id={0}";
                db.ExecuteCommand(query, id);
            } 
        }
        /// <summary>
        /// Thống kê chi theo tháng
        /// </summary>
        /// <param name="Thang">Tháng thống kê</param>
        /// <param name="Nam">Năm năm thống kê</param>
        /// <returns></returns>
        public List<ChiTheoThang> dsChiTheoThang(int Thang, int Nam)
        {
            List<ChiTheoThang> dsChiThang = null;
            using (db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from chi in db.Chis
                            where chi.ngay_chi_tien.Value.Month == Thang && chi.ngay_chi_tien.Value.Year == Nam
                            group chi by chi.ngay_chi_tien into chigroup 
                            select new ChiTheoThang
                            {
                                NgayChi = chigroup.Key.Value, TongChiThang = (decimal)chigroup.Sum(chiItem => chiItem.so_tien_chi)
                            };
                if (query == null)
                    return null;
                dsChiThang = query.ToList<ChiTheoThang>();
                return dsChiThang;
            }
        }

        /// <summary>
        /// Thống kê chi theo năm
        /// </summary>
        /// <param name="Nam">Năm thống kê</param>
        /// <returns></returns>
        public List<ChiTheoNam> dsChiTheoNam(int Nam)
        {
            List<ChiTheoNam> dsChiNam = null;
            using(db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from chi in db.Chis
                            where chi.ngay_chi_tien.Value.Year == Nam
                            group chi by chi.ngay_chi_tien.Value.Month into chigroup
                            select new ChiTheoNam
                            {
                                Thang = chigroup.Key,
                                TongTien = (decimal)chigroup.Sum(chiItem => chiItem.so_tien_chi)
                            };
                if(query == null)
                    return null;
                dsChiNam = query.ToList<ChiTheoNam>();
            }
            return dsChiNam;
        }
    }
}
